home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-11-19 | 3.1 KB | 139 lines | [TEXT/MPS ] |
- /*
- File: TestExceptions.cp
-
- Contains: Implementation of class TTestExceptions
-
- Copyright: © 1992-1995 by Apple Computer, Inc., all rights reserved.
-
- */
-
- #ifndef __TESTEXCEPTIONS__
- #include "TestExceptions.h"
- #endif
-
- /*******************************************************************************
- ** External Function
- ********************************************************************************/
-
- extern void ThrowException(long);
-
- /*******************************************************************************
- ** TTestExceptions routine
- ********************************************************************************/
-
- TTestExceptions::TTestExceptions()
- {}
-
- TTestExceptions::~TTestExceptions()
- {}
-
- void TTestExceptions::InitTest(BooleanParm, BooleanParm, int, char**)
- {}
-
- void TTestExceptions::EndTest(BooleanParm, BooleanParm)
- {}
-
- void TTestExceptions::RunTestIteration(BooleanParm verbose, BooleanParm debug)
- {
- DebugTest(debug, "About to Test Exceptions");
- if (verbose)
- Printf("# INFO: Testing CATCH\n");
-
- TRY
- ThrowException(-10);
- CATCH(-10)
- if (verbose)
- Printf("# INFO: Caught the Exception!\n");
- CATCH_ALL
- Printf("# ERROR: Exception caught in CATCH_ALL - #%d\n", ErrorCode());
- ENDTRY
-
- if (verbose)
- Printf("# INFO: Testing multiple CATCHs\n");
-
- TRY
- ThrowException(-20);
- CATCH(-10)
- Printf("# ERROR: Exception caught in CATCH(-10) - #%d\n", ErrorCode());
- CATCH(-20)
- if (verbose)
- Printf("# INFO: Caught the Exception!\n");
- CATCH(-30)
- Printf("# ERROR: Exception caught in CATCH(-30) - #%d\n", ErrorCode());
- CATCH_ALL
- Printf("# ERROR: Exception caught in CATCH_ALL - #%d\n", ErrorCode());
- ENDTRY
-
- if (verbose)
- Printf("# INFO: Testing CATCH_ALL\n");
-
- TRY
- ThrowException(-21);
- CATCH(-10)
- Printf("# ERROR: Exception caught in CATCH(-10) - #%d\n", ErrorCode());
- CATCH(-20)
- Printf("# ERROR: Exception caught in CATCH(-20) - #%d\n", ErrorCode());
- CATCH(-30)
- Printf("# ERROR: Exception caught in CATCH(-30) - #%d\n", ErrorCode());
- CATCH_ALL
- if (ErrorCode() == -21)
- {
- if (verbose)
- Printf("# INFO: Exception caugh in CATCH_ALL\n");
- }
- else
- Printf("# ERROR: Exception caught in CATCH_ALL - #%d\n", ErrorCode());
- ENDTRY
-
-
- if (verbose)
- Printf("# INFO: Testing FINALLY WITH EXCEPTION\n");
-
- Volatile Boolean flag1 = false;
- Volatile Boolean flag2 = false;
- VOLATILE(flag1);
- VOLATILE(flag2);
-
- TRY
- TRY
- RAISE(-10);
- FINALLY
- flag1 = true;
- if (verbose)
- Printf("# INFO: Reached FINALLY code\n");
- ENDTRY
- CATCH_ALL
- flag2 = true;
- if (verbose)
- Printf("# INFO: Reached outer CATCH code\n");
- ENDTRY
-
- if (!flag1)
- Printf("# ERROR: Never reached FINALLY code\n");
- if (!flag2)
- Printf("# ERROR: FINALLY section did not rethrow exception\n");
-
-
- if (verbose)
- Printf("# INFO: Testing FINALLY WITHOUT EXCEPTION\n");
-
- Volatile Boolean flag = false;
- VOLATILE(flag);
-
- TRY
- TRY
- // nothing to do here
- FINALLY
- flag = true;
- if (verbose)
- Printf("# INFO: Reached FINALLY code\n");
- ENDTRY
- CATCH_ALL
- if (verbose)
- Printf("# ERROR: FINALLY section rethrew exception\n");
- ENDTRY
-
- if (!flag)
- Printf("# ERROR: Never reached FINALLY code\n");
- }
-